import { FormData } from '@ohos/axios'

/**
 * NetworkFormData 类用于管理网络请求的表单数据
 */
export class NetworkFormData {
  private formData = new FormData()

  /**
   * 获取表单数据
   * @returns 返回当前实例的 FormData 对象
   */
  getFormData(): FormData {
    return this.formData
  }

  /**
   * 向表单数据中追加条目
   * @param name 表单字段名
   * @param value 表单字段值
   * @param option 可选参数，指定字段的附加信息
   */
  append(name: string, value: any, option?: any): void {
    this.formData.append(name, value, option)
  }

  /**
   * 获取表单中指定字段的值
   * @param name 表单字段名
   * @returns 返回指定字段的值
   */
  get(name: string): any {
    return this.formData.get(name)
  }

  /**
   * 检查表单中是否存在指定字段
   * @param name 表单字段名
   * @returns 如果字段存在返回 true，否则返回 false
   */
  has(name: string): boolean {
    return this.formData.has(name)
  }

  /**
   * 从表单中删除指定字段
   * @param name 表单字段名
   * @returns 如果字段被成功删除返回 true，否则返回 false
   */
  delete(name: string): boolean {
    return this.formData.delete(name)
  }

  /**
   * 设置或替换表单中指定字段的值
   * @param name 表单字段名
   * @param value 表单字段的新值
   * @param option 可选参数，指定字段的附加信息
   */
  set(name: string, value: any, option?: any): void {
    return this.formData.set(name, value, option)
  }

  /**
   * 遍历表单数据中的所有条目
   * @param callback 对每个表单字段执行的回调函数
   */
  forEach(callback: (value: any, key?: string, option?: any) => void): void {
    this.formData.forEach(callback)
  }
}